export function flattenTree<T, CK extends keyof T>(node: T, childKey: CK): Array<T> {
  // 创建一个数组来存储结果
  const array: T[] = [];

  // 定义一个递归函数来处理每个节点
  function processNode(node: T) {
    // 将当前节点添加到数组中
    array.push({
      ...node,
      [childKey]: [] // 不包含子节点信息
    });

    // 如果当前节点有子节点，递归处理每个子节点
    const child = node[childKey] as any[];
    if (child?.length > 0) {
      child.map((child) => {
        processNode(child);
      });
    }
  }

  // 开始处理根节点
  processNode(node);

  // 返回包含所有节点的数组
  return array;
}
